Streaming of media over a network from a content server to a media device has been widely adopted for media consumption. Two network protocols used for media streaming include the user datagram protocol Internet protocol (“UDP IP”) and the transfer control protocol (“TCP”) IP. UDP IP is often used for media streaming for relatively reliable networks, such as in-home streaming over wired connections. TCP IP is often used for streaming over less reliable networks.
The hypertext transfer protocol (“HTTP”) based live streaming (“HLS”) protocol, used with the TCP IP, allows a content server to publish variant playlist files to media devices. A variant playlist file identifies multiple sets of video streams for a media program, such as a movie, a television program, etc., where each set of video streams has unique encoding parameters (e.g., bit rates, resolutions, etc.) for the media program. The media devices may dynamically switch between the sets of video streams identified in the variant playlist file as the sets of video streams are transmitted from the content server to the media devices. The media devices may choose to receive an initial set of video streams identified in the variant playlist file based on initial network conditions, initial buffer conditions, etc. For example, the media devices may choose to receive a set of high definition (“HD”) video streams identified in the variant playlist file if the initial network conditions, the initial buffer conditions, etc., support the streaming of the HD set of video streams. If the initial network conditions degrade, or if the initial buffer conditions degrade, etc., then the media devices may choose to receive a set of low definition video streams identified in the variant playlist file. That is, the media device may dynamically choose different sets of video streams to receive from the content server where the different sets of video streams have different encoding parameters.
Selection and transmission of the sets of video streams are driven by the media devices. In response to a selection of a set of video streams identified in the variant playlist file, the content server passively transmits the set of video streams to the media device. The media device may have limited information about the network conditions and might not select a set of video streams that is suitable for the current network conditions. Further, some types of media devices select the highest resolution and highest bit rate sets of video streams to receive. Typically the content server services multiple media devices, transmitting multiple sets of video streams to the media devices. If a media device requests a set of video streams with high resolution and high bit rate, a large portion of content server resources or network bandwidth may have to be allocated in order to service that media device. Consequently, the other media devices serviced by the content server may experience degraded performance such as intermittent interruptions in the transmission of video streams.